from skimage import data,filters
from matplotlib import pyplot as plt
import numpy as np

#3.25

'''

'''
#原始图像
image=data.camera()
#中心为-4
img_laplace=filters.laplace(image,ksize=3,mask=None)
img_enhance=image-img_laplace#锐化增强
#显示图像
plt.figure()
plt.imshow(img_enhance,cmap='gray')#经过拉普拉斯变换后的图像

#图像空间滤波函数
def correl2d(img,window):
    
    m=window.shape[0]
    n=window.shape[1]
    #边界通过0灰度值填充扩展
    img1=np.zeros((img.shape[0]+m-1,img.shape[1]+n-1))
    img1[(m-1)//2:(img.shape[0]+(m-1)//2),(n-1)//2:(img.shape[1]+(n-1)//2)]=img
    img2=np.zeros(img.shape)
    for i in range(img2.shape[0]):
         for j in range(img2.shape[1]):
             temp=img1[i:i+m,j:j+n]
             img2[i,j]=np.sum(np.multiply(temp,window))
    return img2

#img为原始图像
imge=data.camera()
#显示原始图像
plt.figure()
plt.imshow(imge)

#img_laplace为原始图像经过拉普拉斯变换后的结果
window=np.array([[1,1,1],[1,-8,1],[1,1,1]])#中心为-8
img_laplace=correl2d(imge,window)
img_laplace=255*(img_laplace-img_laplace.min())/(img_laplace.max()-img_laplace.min())
img_laplace_enhance=imge-img_laplace#锐化增强
#显示图像
plt.figure()
plt.imshow(img_laplace_enhance,cmap='gray')#经过拉普拉斯变换后的图像


#3.26
#5*5中心为-24
window1=np.array([[1,1,1,1,1],[1,1,1,1,1],[1,1,-24,1,1],[1,1,1,1,1],[1,1,1,1,1]])
img_laplace_1=correl2d(imge,window1)
img_laplace_1=255*(img_laplace_1-img_laplace_1.min())/(img_laplace_1.max()-img_laplace_1.min())
img_laplace_enhance_1=imge-img_laplace_1


plt.figure()
plt.imshow(img_laplace_enhance_1)

#512*512中心为-511
m,n=image.shape#图像的尺寸
window3=np.ones((512,512))
window3[256,256]=-(512*512-1)
img_laplace_3=correl2d(imge,window3)
img_laplace_3=255*(img_laplace_3-img_laplace_3.min())/(img_laplace_3.max()-img_laplace_3.min())
img_laplace_enhance_3=imge-img_laplace_3
plt.figure()
plt.imshow(img_laplace_enhance_3)

